OBJS = main.o print.o

test: $(OBJS)
	g++ -o test $(OBJS)
	@echo 正在编译 print 模块...	

main.o: print.hpp
print.o: print.hpp

# .PHONY: clean		#表示 clean 是个伪目标文件
# clean:
# 	rm test $(OBJS)
#### 更稳健的做法 ####
.PHONY: clean
clean:
	-rm test $(OBJS)	# -表示也许某些文件出现问题，但不要管，继续做后面的事

# 版本二
#######################
# OBJS = main.o print.o

# test: $(OBJS)
# 	g++ -o test $(OBJS)
# main.o: main.cpp print.hpp
# 	g++ -c main.cpp
# print.o: print.cpp print.hpp
# 	g++ -c print.cpp
# clean:
# 	rm test $(OBJS)
#######################

# 版本一
##############################
# test: main.o print.o
# 	g++ -o test main.o print.o

# main.o: main.cpp print.hpp
# 	g++ -c main.cpp

# print.o: print.cpp print.hpp
# 	g++ -c print.cpp

# clean: 
# 	rm test main.o \
# 	print.o
##############################

############ 注释 #################
# target ...: prerequisites ...
# 	command
# 	...
# 	...

# target: 目标文件
# prerequisites: 生成 target 所需要的文件或是目标
# command: make 需要执行的命令
# \ : 换行符
###################################
